<?php
namespace PhpComposer\simhashCore;

class TextProcessor
{
    /**
     * 文本预处理
     */
    public static function preprocess(string $text): string
    {
        // 去除特殊字符，保留中文标点
        $text = preg_replace('/[^\w\s，。,.;；？?！!()（）《》<>]/u', '', $text);
        // 替换同义词
        $synonyms = [
            // '模拟' => '具有',
            // '重要分支' => '分支',
            // '发展迅速' => '进步',
            // '广泛应用' => '得到应用'
        ];
        $text = strtr($text, $synonyms);
        // 去除多余空格
        return trim(preg_replace('/\s+/', ' ', $text));
    }
    
    /**
     * 分词处理（简单实现，实际可用SCWS等扩展）
     */
    public static function tokenize(string $text): array
    {
        // 基础分词（可替换为更专业的分词库）
        preg_match_all('/[\p{Han}a-zA-Z0-9]+/u', $text, $matches);
        $tokens = $matches[0] ?? [];
        
        // 过滤短词
        return array_filter($tokens, function($token) {
            return mb_strlen($token) >= 2;
        });
    }
    
    /**
     * 生成n-gram特征（捕捉词序）
     */
    public static function generateNgrams(array $tokens, int $n = 2): array
    {
        $ngrams = [];
        $count = count($tokens);
        
        for ($i = 0; $i <= $count - $n; $i++) {
            $ngram = implode(' ', array_slice($tokens, $i, $n));
            $ngrams[] = $ngram;
        }
        
        return $ngrams;
    }
}
    